package com.me.study.javaCore.classLoader.classLoadingSeq1.test1;

/**
 * 类加载顺序测试类
 *
 * @author ME
 * @date   2020/5/19
 */
public class TestClassLoadSeq {

    public static void main(String[] args) {
        /**
         * [ClassA] 静态代码块
         * [person] 静态代码块
         * [person] 构造方法：static ClassA
         * [ClassB] 静态代码块
         * [ClassA] 非静态代码块：s1
         * [ClassA] 构造方法
         * [person] 构造方法：ClassB
         * [ClassB] 非静态代码块 早于 构造方法执行
         * [ClassB] 构造方法
         */
        /**
         * 先静态域后动态域。
         * 同（静态、动态）域代码，先父类后子类。
         * 同（父、子）类代码当中，
         *      静态域按顺序执行（ClassA 中 静态personA 晚于 静态块，引用 personA 编译不通过）；
         *      动态域当中 成员变量、代码块顺序执行，并优先于构造方法（ClassB 中，构造方法声明在 personB 前，却先调用了 personB），其余按顺序。
         *
         */
        new ClassB();
    }
    
}
